package siscom.modelos.DAO;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.List;
import siscom.database.GerenciadorConexoes;
import siscom.modelos.Produto;

/**
 *
 * @author Carlos Ribeiro
 */
public class ProdutoDAO implements DAO<Produto> {

    private GerenciadorConexoes conexao = new GerenciadorConexoes();
    private PreparedStatement pstmt;

    @Override
    public void salvar(Produto instancia) throws SQLException {
        String query = "INSERT INTO produtos(codigo_barra, descricao,preco_compra,preco_venda, id_categoria_produto,id_marca) VALUES (?,?,?,?,?,?)";
        pstmt = conexao.getConnection().prepareStatement(query);
        pstmt.setString(1, instancia.getCodigoBarra());
        pstmt.setString(2, instancia.getDescricao());
        pstmt.setBigDecimal(3, instancia.getPrecoCompra());
        pstmt.setBigDecimal(4, instancia.getPrecoVenda());

        if (instancia.getCategoria() == null) {
            pstmt.setNull(5, Types.INTEGER);

        } else {
            pstmt.setInt(5, instancia.getCategoria().getIdCategoriaProduto());
        }
        if (instancia.getMarca() == null) {

            pstmt.setNull(6, Types.INTEGER);
        } else {
            pstmt.setInt(6, instancia.getMarca().getIdMarca());
        }
        pstmt.execute();
        conexao.getConnection().commit();
        PreparedStatement ps = conexao.getConnection().prepareStatement(conexao.getConexao().getLastInsertID("produtos", "id_produto"));
        ResultSet rs = ps.executeQuery();
        rs.next();
        int id = rs.getInt(1);
        instancia.setIdProduto(id);
        ps.close();
        pstmt.close();
        /*        Statement st = conexao.getConnection().createStatement();
        ResultSet rs = st.executeQuery(conexao.getConexao().getLastInsertID("produto", "id_produto"));
         */
    }

    @Override
    public Produto selecionar(Produto instancia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List<Produto> selecionarTodos() throws SQLException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void atualizar(Produto instancia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void salvarOuAtualizar(Produto instancia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void excluir(Produto instancia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean existe(Produto instancia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean existeCodBarra(String codBarra) throws SQLException {
        String query = "SELECT id_produto FROM produtos WHERE codigo_barra = ?";
        pstmt = conexao.getConnection().prepareStatement(query);
        pstmt.setString(1, codBarra);
        if (pstmt.executeQuery().next()) {
            return true;
        }
        return false;
    }
}
